Voltage dithering is a well-known technique for managing heat generation in a computing system. A dithering requirement is imposed on requests for high voltage in a computer system using a free running clock, which divides a given cycle into high-voltage-possible and only-low-voltage phases. If a process running on the system requests high voltage during a high-voltage-possible phase, it receives high voltage so long as the high-voltage-possible phase lasts, whereas if the process requests high voltage during a only-low-voltage phase, no high voltage is given. This decreases performance of the system, since the high voltage phases are enforced independently of high voltage requests from processes on the system.
FIG. 1 illustrates waveforms of a prior art voltage dithering process. Waveform 101 is the voltage dithering waveform, and evenly distributes high and low voltage phases over a period of time using a free-running clock. Half of the time of the cycle is made available for high voltage, and half of the time is required to be low voltage. Waveform 105 illustrates when a process running a computer system has requested high voltage and when that request was satisfied. The unfilled portion of the high voltage requests in waveform 105 indicate that the request for high voltage was satisfied, whereas the shaded portions 105, 107, 109, and 111 of the high voltage requests indicate that portions of the request for high voltage were not satisfied due to requirements of the dithering waveform 101. Waveform 113 illustrates the portions of the high voltage requests that were satisfied. Although the dithering waveform 101 allowed up to 50% of the cycle to be high voltage and the high voltage requests amounted to only 45%, due to the independence of the dithering waveform 101 from the voltage request waveform 103, only 18% of the cycle was spent in a high voltage mode, unnecessarily reducing the performance of the system.